package com.zlsy.learning.leetcode.linkedlist;

/**
 * @author zhouliang
 * @date 2020/8/18 19:50
 */
public class JosephRing {}

class CreatLink {

  /** 头结点 */
  private Node head;

  /** 参与约瑟夫游戏的人数（链表的长度） */
  private int personSum;

  /** 从几号开始玩游戏 */
  private int startSum;

  /** 创建循环链表 */
  public void createLink() {
    // 初始化头
    Node temp = new Node(-1);
    head = temp;
    // 初始化头以外的节点
    for (int i = 2; i <= personSum; i++) {
      temp.next = new Node(i);
      temp = temp.next;
    }
    // 尾结点指向头（循环列表）
    temp.next = head;
  }

  /**
   * 找到开始游戏的人
   *
   * @return Node 开始游戏的人
   */
  public Node startNum() {
    int count = 1;
    Node temp = head;
    while (count != startSum) {
      temp = temp.next;
      count++;
    }
    return temp;
  }

  public void playGame() {
    // 开始游戏的那个节点
    Node node = startNum();
    // 要自杀的那个人（需要移除的节点）
    Node removeNode;
    int count =1;

  }

  /** 定义一个链表结构 */
  class Node {
    int data;
    Node next;

    public Node(int data) {
      this.data = data;
    }
  }
}
